package com.ruoyi.system.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 消息模板实体类
 * 用于定义各种类型消息的模板，支持变量替换、附件配置、签名要求等
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
@TableName("t_msg_template")
public class MsgTemplateDO {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 模板名称
     * 用于标识和管理模板，同类型下名称唯一
     */
    private String name;
    
    /**
     * 消息类型
     * 1-设计资料,2-主材清单,3-合同签署,4-验收信息,5-财务支付,6-阶段验收,7-需求变更,99-其他
     * @see com.ruoyi.system.enums.MsgTypeEnum
     */
    private Integer type;
    
    /**
     * 消息标题模板
     * 支持变量替换，如：{projectName}、{contractName}等
     */
    private String title;
    
    /**
     * 消息内容模板
     * 支持变量替换，如：{projectName}、{contractName}、{expireDate}等
     */
    private String content;

    /**
     * 是否需要签名
     * 0-不需要签名, 1-需要签名
     */
    @TableField("need_signature")
    private Integer needSignature;

    /**
     * 消息有效期天数
     * 1-30天，超过有效期后消息自动过期
     */
    @TableField("expire_days")
    private Integer expireDays;

    /**
     * 模板状态
     * 0-禁用, 1-启用
     * 只有启用状态的模板才能用于消息推送
     */
    private Integer status;

    /**
     * 创建人
     */
    @TableField("create_by")
    private String createBy;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    @TableField("update_by")
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标识
     * 0-存在, 1-删除
     */
    @TableField("is_deleted")
    @TableLogic
    private Integer isDeleted;

    @TableField(exist = false)
    private List<Long> projectIds;
}
